Structured Rapid Prototyping: An Evolutionary Approach to Software Development
Authors: John L. Connell, Linda Brice Shafer, John L. Connell, Linda Brice Shafer
Overview
This book is written for anyone involved in software development – programmers, analysts, designers, managers, or even end-users – who want to build better software applications faster and cheaper. The core idea is structured rapid prototyping, a technique I’ve used with great success, involving iterative development and refinement of dynamic requirements models that evolve into deliverable systems. We dispel common misunderstandings: prototyping is not about solving performance problems initially; it’s not just a quick front-end fix; it’s not a guaranteed time-saver. Rapid refers to model building and modification, not the entire project. A prototype is a working visual model, a dynamic communication tool far superior to static documentation. It lets users experience the system before it’s built, eliminating misunderstandings and costly late-stage changes. We emphasize the use of suitable software and hardware tools. Evolutionary rapid prototyping – our focus – is not just creating disposable mock-ups, but building systems that can be iteratively refined into a fully functional final product. This approach reduces lifecycle costs significantly by catching errors early. We discuss different prototyping approaches, highlighting their limitations compared to evolutionary prototyping. Structured development techniques, such as dataflow diagrams, entity-relationship diagrams, and control flow graphs, are vital for managing prototype complexity and integrating with existing systems. We contrast evolutionary rapid prototyping with the traditional software lifecycle, suggesting modifications to accommodate prototyping’s iterative nature. The book provides practical guidance on planning and executing a prototyping project, from initial analysis to final delivery. We also cover common causes of prototyping failures, often due to differing definitions and expectations, and emphasize the importance of user involvement, performance tuning, and adequate documentation. We look towards future trends like improved toolkits and increased end-user prototyping. In short, this book provides a structured methodology for rapid prototyping that embraces software engineering best practices, promising greater user satisfaction, lower development costs, and more efficient maintenance.
Book Outline
1. Introduction
This chapter introduces rapid prototyping and addresses common misconceptions. It emphasizes that prototyping is an analysis technique focused on defining user requirements through dynamic visual models. Key questions are raised, including the objectives of prototyping, its compatibility with structured techniques, the role of end users, and potential benefits and risks.
Key concept: A software rapid prototype is a dynamic visual model providing a communication tool…
2. Critical Issues in Software Rapid Prototyping
Prototyping is examined globally, highlighting its role in user software selection and its historical context. Different prototyping approaches are discussed, such as throwaway, quick and dirty, and evolutionary. Evolutionary prototyping is advocated for its focus on evolving the prototype into the final product, leading to greater user satisfaction and cost savings.
Key concept: Evolutionary rapid prototyping is a cost-effective means of discovering the true and complete set of system functional requirements.
3. Tools, Techniques, and Methodologies of Evolutionary Rapid Prototyping
The tools and techniques for evolutionary rapid prototyping are explored. This includes discussions of competing philosophies regarding prototyping, building evolvable models, and choosing a suitable relational database management system (RDMS). Incorporating structured software development techniques and formal specification methodologies are also highlighted.
Key concept: A complete RDMS-based rapid prototyping toolkit is an integrated development environment…
4. Evolutionary Rapid Prototyping versus The Traditional Software Development Life Cycle
Evolutionary rapid prototyping is compared with the traditional software development life cycle. Modifications are proposed for milestones, life cycle products, and life cycle activities within a traditional framework to accommodate a rapid prototyping approach, emphasizing the importance of iterative and concurrent processes.
Key concept: Rapid prototyping is not a quick and dirty approach – it can be thought of as a complement to existing structured development techniques rather than an alternative to those techniques.
5. Developing an Initial Rapid Prototype
The process of developing an initial rapid prototype is explained, beginning with planning the project and rapid analysis to understand user needs. Techniques for building a preliminary model of functionality, stored information, and system event paths are illustrated using dataflow diagrams, entity-relationship diagrams, and control flow graphs.
Key concept: Rapid analysis is the first active phase of an evolutionary prototyping project.
6. Evolving a Rapid Prototype into a Deliverable System
This chapter discusses evolving a rapid prototype into a deliverable system. Topics covered include prototype iteration, user feedback, design derivation, performance tuning, and final product delivery. It emphasizes the importance of not delivering a prototype prematurely and outlines necessary preparation for final delivery.
Key concept: The golden rule of rapid prototyping is: never deliver a prototype.
7. Managing the Rapid Prototyping Process
Managing the rapid prototyping process is explored, discussing required skills, toolkit selection criteria, and techniques for measuring and controlling productivity. User involvement, controlling user expectations, and summarization of the management process are emphasized.
Key concept: Management of a rapid prototyping project is a process in many ways similar to the development and evolution of the prototype itself.
8. Causes of Failures During Prototyping
This chapter documents causes of failure during prototyping projects, which are primarily due to misunderstandings between users, managers, and developers. Common issues and how to mitigate them are discussed. The chapter stresses the importance of clear definitions, planning, user involvement, tuning, and training to achieve project success.
Key concept: Project members holding differing definitions of prototyping is the number one cause of prototyping project failures.
9. Case Studies in Rapid Prototyping
Several case studies are presented showing various rapid prototyping approaches applied to real-world projects, both successes and failures. The cases span different timeframes and provide specific lessons learned about tools, techniques, and user interactions.
Key concept: Prototyping is certainly not an entirely new idea…
10. Do-It-Yourself Rapid Prototyping
Do-it-yourself rapid prototyping and its implications are explored, emphasizing the user’s role and managing expectations. Prototyping on personal computers and case studies focusing on end-user prototyping are showcased. An example of AI technology being applied to end-user prototyping is included.
Key concept: As with automobile maintenance and home remodeling, there is a do-it-yourself movement in the software development field.
11. Future Trends in Rapid Prototyping
Future trends in rapid prototyping are discussed. This includes enhancements of prototyping tools, hardware advances, language advances, and automated software development productivity tools. The chapter emphasizes compatibility between environments, performance efficiency, and ease of use as critical elements for the future.
Key concept: Structured rapid prototyping is the future of software development because future hardware and software advances…
12. Special Interest Topics in Rapid Prototyping
Special interest topics are discussed, offering deeper insight into rapid prototyping. This includes alternative methodologies, the role of normalization, data modeling, prototyping centers, rapid prototyping in Ada and VHDL environments, and how to modify the approach when limited tools are available.
Key concept: There are many other approaches to prototyping, most of which have not been published or, when published, have not been adequately explained.
13. Making Prototyping Work in Your Environment
This chapter focuses on implementing rapid prototyping within an organization, touching upon how it impacts project work and team structure. The importance of establishing methodologies for rapid maintenance, modifying service requests, and funding rapid prototyping development centers are also presented.
Key concept: If you are one of the top executives of your company…
Essential Questions
1. What critical objectives of software development are most effectively achieved through rapid prototyping?
The core objective most effectively achieved is the accurate and complete definition of user requirements. By using a working prototype, users can interact with the system early and often, providing feedback that leads to iterative refinement and a final product that more closely matches their needs. This addresses the common problem of miscommunication between users and developers that often occurs with traditional methods relying on static documentation.
2. Are special tools required for rapid prototyping?
Special tools, especially software, are essential for rapid prototyping. While simple screen mock-ups can be created with basic tools, true rapid prototyping requires dynamic, modifiable models. Relational Database Management Systems (RDMS) with integrated 4GLs, visual programming, and application generation capabilities are ideal for creating these models, as they allow for easy data storage, function creation, and interface design. Hardware is also important as some tools operate only on certain platforms and efficiency varies with system resources.
3. Can rapid prototyping be used as an evolutionary development technique?
Yes, using an evolutionary approach. This involves not just creating a disposable model, but building a prototype that can be iteratively refined and tuned into the final, deliverable system. The choice of tools is crucial for this. RDMS-based environments are ideal because they allow easy modification of functionality and database structure, transparent interfaces to other development tools, and minimize operating overhead. This evolvability offers substantial cost savings in both development and maintenance.
4. What types of application systems are best suited for rapid prototyping?
Rapid prototyping is most beneficial for applications where the user interface is critical for success, as it allows for early user involvement and iterative refinement of interface design. This is particularly true for systems with a risk of building incorrect or unacceptable functionality. While often associated with smaller systems, advancements in tools now make large system prototyping feasible. While traditionally applied to data processing systems, techniques in this book also extend to real-time systems where the human interface is a critical component.
5. Are structured software specification and development techniques compatible with rapid prototyping?
Yes, they are fully compatible and indeed complementary. Structured techniques, such as dataflow diagrams, entity-relationship diagrams, and control flow graphs, are not replaced, but used differently. They document the evolving prototype, providing a “big picture” view to manage complexity, facilitate communication, and control thrashing during prototype iterations. Rather than creating large, detailed specifications before development, these techniques capture the essence of the design as it evolves.
1. What critical objectives of software development are most effectively achieved through rapid prototyping?
The core objective most effectively achieved is the accurate and complete definition of user requirements. By using a working prototype, users can interact with the system early and often, providing feedback that leads to iterative refinement and a final product that more closely matches their needs. This addresses the common problem of miscommunication between users and developers that often occurs with traditional methods relying on static documentation.
2. Are special tools required for rapid prototyping?
Special tools, especially software, are essential for rapid prototyping. While simple screen mock-ups can be created with basic tools, true rapid prototyping requires dynamic, modifiable models. Relational Database Management Systems (RDMS) with integrated 4GLs, visual programming, and application generation capabilities are ideal for creating these models, as they allow for easy data storage, function creation, and interface design. Hardware is also important as some tools operate only on certain platforms and efficiency varies with system resources.
3. Can rapid prototyping be used as an evolutionary development technique?
Yes, using an evolutionary approach. This involves not just creating a disposable model, but building a prototype that can be iteratively refined and tuned into the final, deliverable system. The choice of tools is crucial for this. RDMS-based environments are ideal because they allow easy modification of functionality and database structure, transparent interfaces to other development tools, and minimize operating overhead. This evolvability offers substantial cost savings in both development and maintenance.
4. What types of application systems are best suited for rapid prototyping?
Rapid prototyping is most beneficial for applications where the user interface is critical for success, as it allows for early user involvement and iterative refinement of interface design. This is particularly true for systems with a risk of building incorrect or unacceptable functionality. While often associated with smaller systems, advancements in tools now make large system prototyping feasible. While traditionally applied to data processing systems, techniques in this book also extend to real-time systems where the human interface is a critical component.
5. Are structured software specification and development techniques compatible with rapid prototyping?
Yes, they are fully compatible and indeed complementary. Structured techniques, such as dataflow diagrams, entity-relationship diagrams, and control flow graphs, are not replaced, but used differently. They document the evolving prototype, providing a “big picture” view to manage complexity, facilitate communication, and control thrashing during prototype iterations. Rather than creating large, detailed specifications before development, these techniques capture the essence of the design as it evolves.
Key Takeaways
1. Embrace evolutionary prototyping.
Evolutionary prototyping is more than just building a quick mock-up. It’s a complete development approach where an initial prototype evolves into the final system through iterative refinement. This allows user feedback to drive design, ensuring the final product meets their actual needs. This method significantly reduces expensive post-implementation rework and increases user satisfaction.
Practical Application:
An AI product team can use evolutionary prototyping to develop a complex natural language processing system. By building a basic prototype and iteratively refining it with user feedback, the team can ensure the system accurately interprets and responds to a wide range of user queries, resulting in a more user-friendly and effective product.
2. Choose the right tools.
The right tools are essential. RDMSs with integrated 4GLs, visual programming, and application generation capabilities provide the flexibility and power to rapidly create and modify prototypes, supporting interactive experimentation and user involvement throughout the process.
Practical Application:
An AI development team is tasked with creating a computer vision system. Using RDMS tools, they can quickly create a prototype that processes sample images and presents results on screen. This allows users (computer vision engineers) to immediately interact with the system, guiding refinements to image processing algorithms and output displays.
3. Use structured techniques throughout the lifecycle.
Prototyping is not just a front-end analysis technique. Structured techniques, such as dataflow diagrams, entity-relationship diagrams, and control flow graphs, play a critical role in documenting the evolving system, managing complexity, and ensuring maintainability. These techniques are not replaced but applied differently, capturing the design as it evolves rather than attempting complete up-front specification.
Practical Application:
An AI project involves developing an expert system for medical diagnosis. Initially, the prototype focuses on basic diagnostic rules and a simple user interface. As the project progresses, more complex diagnostic algorithms and advanced features, such as image processing integration or explanation facilities, can be added incrementally.
1. Embrace evolutionary prototyping.
Evolutionary prototyping is more than just building a quick mock-up. It’s a complete development approach where an initial prototype evolves into the final system through iterative refinement. This allows user feedback to drive design, ensuring the final product meets their actual needs. This method significantly reduces expensive post-implementation rework and increases user satisfaction.
Practical Application:
An AI product team can use evolutionary prototyping to develop a complex natural language processing system. By building a basic prototype and iteratively refining it with user feedback, the team can ensure the system accurately interprets and responds to a wide range of user queries, resulting in a more user-friendly and effective product.
2. Choose the right tools.
The right tools are essential. RDMSs with integrated 4GLs, visual programming, and application generation capabilities provide the flexibility and power to rapidly create and modify prototypes, supporting interactive experimentation and user involvement throughout the process.
Practical Application:
An AI development team is tasked with creating a computer vision system. Using RDMS tools, they can quickly create a prototype that processes sample images and presents results on screen. This allows users (computer vision engineers) to immediately interact with the system, guiding refinements to image processing algorithms and output displays.
3. Use structured techniques throughout the lifecycle.
Prototyping is not just a front-end analysis technique. Structured techniques, such as dataflow diagrams, entity-relationship diagrams, and control flow graphs, play a critical role in documenting the evolving system, managing complexity, and ensuring maintainability. These techniques are not replaced but applied differently, capturing the design as it evolves rather than attempting complete up-front specification.
Practical Application:
An AI project involves developing an expert system for medical diagnosis. Initially, the prototype focuses on basic diagnostic rules and a simple user interface. As the project progresses, more complex diagnostic algorithms and advanced features, such as image processing integration or explanation facilities, can be added incrementally.
Suggested Deep Dive
Chapter: Chapter 6: Evolving a Rapid Prototype into a Deliverable System
This chapter offers valuable insights into refining a prototype into a production-ready system, addressing critical issues like performance tuning and dealing with unexpected user requests or changes. It’s particularly relevant for AI product engineers as they move from experimental models to real-world deployments.
Memorable Quotes
Chapter 1, Introduction. 1
A software rapid prototype is a dynamic visual model providing a communication tool for customer and developer that is far more effective than either narrative prose or static visual models for portraying functionality.
Chapter 1, Introduction. 4
With evolutionary rapid prototyping, one can respond quickly to the customer’s continually changing needs, even after delivery of the final product.
Chapter 1, Introduction. 13
Rapid prototyping is a risk avoidance approach rather than a risky approach.
Preface. 18
As the name implies, this book presents a structured methodology for the rapid creation and iterative refinement of dynamic requirements models… It is a methodology that encompasses the entire software life cycle…
Chapter 6, Evolving a Rapid Prototype into a Deliverable System. 150
The golden rule of rapid prototyping is: never deliver a prototype.
Chapter 1, Introduction. 1
A software rapid prototype is a dynamic visual model providing a communication tool for customer and developer that is far more effective than either narrative prose or static visual models for portraying functionality.
Chapter 1, Introduction. 4
With evolutionary rapid prototyping, one can respond quickly to the customer’s continually changing needs, even after delivery of the final product.
Chapter 1, Introduction. 13
Rapid prototyping is a risk avoidance approach rather than a risky approach.
Preface. 18
As the name implies, this book presents a structured methodology for the rapid creation and iterative refinement of dynamic requirements models… It is a methodology that encompasses the entire software life cycle…
Chapter 6, Evolving a Rapid Prototype into a Deliverable System. 150
The golden rule of rapid prototyping is: never deliver a prototype.
Comparative Analysis
Unlike other books on software development of the time, such as those by DeMarco, Yourdon, Constantine, and Page-Jones that emphasized modeling the current system and prespecification of design and requirements, ‘Structured Rapid Prototyping’ focuses on getting a working prototype in front of the user as quickly as possible. This shift was partly due to the emergence of new, powerful prototyping tools like 4GLs and RDMSs. While structured analysis and design techniques were still valuable, this book emphasizes their use in a different context, primarily for documentation and maintaining the “big picture” of the system rather than exhaustive up-front requirements gathering. Boar’s ‘Application Prototyping’, published around the same time, shared many similarities with this book, particularly in its advocacy for data-driven prototyping and the use of 4GLs. However, Boar diverged in his dismissal of structured techniques and preference for quasi-relational DBMSs due to perceived performance limitations of RDMSs at the time. Blum’s early work on prototyping with MUMPS is acknowledged as a precursor to this book, demonstrating the feasibility of rapid model development and modification.
Reflection
Connell and Shafer’s ‘Structured Rapid Prototyping’, published in 1989, captured a pivotal moment in software development. The book correctly anticipated the move away from mainframe-centric development toward distributed systems and the increasing role of end-users. While their focus on RDMS-based tools may seem dated in the current context of cloud-based development and diverse technology stacks, the core principles of their evolutionary approach – iterative development, user involvement, and continuous refinement – remain highly relevant. Their arguments about the cost-effectiveness of early error detection and reduced maintenance overhead resonate even more strongly today, in an era of agile development and lean methodologies. A skeptical angle is that the book assumes user availability and willingness to participate, which can be a challenge in practice. Also, the emphasis on structured techniques might be viewed as too rigid by proponents of more flexible agile methods. Nevertheless, ‘Structured Rapid Prototyping’ made a significant contribution by providing a structured framework for an emerging practice, advocating for user-centric design, and setting the stage for the iterative development methodologies that have become dominant in the software industry today.
Flashcards
What is a software rapid prototype?
A dynamic visual model used as a communication tool between users and developers.
What is prototype iteration?
The process of iteratively refining a prototype based on user feedback, demonstrations, and design changes.
What are the four techniques for performance tuning?
Optimizing the database structure, configuration modifications, data minimization, and coding/replacing modules.
What are the five different approaches to software prototyping?
Throwaway, quick and dirty, detail design-driven, mock-up, and evolutionary.
What type of software development environment is ideal for evolutionary rapid prototyping?
RDMS (Relational Database Management System) with 4GL, visual programming, and application generation capabilities.
What are the four key diagrams used in the rapid analysis phase of structured rapid prototyping?
Context diagram, essential functions diagram, entity-relationship diagram, and control flow graph.
What are the key phases in the structured rapid prototyping lifecycle?
Planning, rapid analysis, prototype iteration, design derivation, tuning, integration, delivery, and maintenance.
What are the common risks associated with rapid prototyping?
Misunderstandings of definitions and objectives, disagreements on methodology, out-of-control users, budget cuts, premature delivery, over-evolved prototypes, and lack of maintenance support.
What are the key benefits of rapid prototyping?
Discover true user requirements, reduce development costs, improve software quality, increase user satisfaction, and enhance maintainability.
What is a software rapid prototype?
A dynamic visual model used as a communication tool between users and developers.
What is prototype iteration?
The process of iteratively refining a prototype based on user feedback, demonstrations, and design changes.
What are the four techniques for performance tuning?
Optimizing the database structure, configuration modifications, data minimization, and coding/replacing modules.
What are the five different approaches to software prototyping?
Throwaway, quick and dirty, detail design-driven, mock-up, and evolutionary.
What type of software development environment is ideal for evolutionary rapid prototyping?
RDMS (Relational Database Management System) with 4GL, visual programming, and application generation capabilities.
What are the four key diagrams used in the rapid analysis phase of structured rapid prototyping?
Context diagram, essential functions diagram, entity-relationship diagram, and control flow graph.
What are the key phases in the structured rapid prototyping lifecycle?
Planning, rapid analysis, prototype iteration, design derivation, tuning, integration, delivery, and maintenance.
What are the common risks associated with rapid prototyping?
Misunderstandings of definitions and objectives, disagreements on methodology, out-of-control users, budget cuts, premature delivery, over-evolved prototypes, and lack of maintenance support.
What are the key benefits of rapid prototyping?
Discover true user requirements, reduce development costs, improve software quality, increase user satisfaction, and enhance maintainability.